package com.krubi.model;

import static javax.persistence.GenerationType.IDENTITY;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.Table;


@Entity
@Table(name = "grupos_usuarios")
public class GrupoUsuarios 
{

	@Id
	@Column(name="id", unique=true, nullable=false )
	@GeneratedValue( strategy = IDENTITY )
	private long id;
	
	@Column(name="grupo", unique=true, nullable=false )
	private String grupo;

	@Column(name="descripcion", nullable=false )
	private String descripcion;

	
	@ManyToMany(targetEntity=GrupoUsuarios.class,
			cascade={CascadeType.PERSIST, CascadeType.MERGE})
	@JoinTable(name="usuarios_x_grupos_usuarios",
			joinColumns=@JoinColumn(name="id_grupo_usuarios"),
			inverseJoinColumns=@JoinColumn(name="id_usuario"))
	private List<Usuario> usuarios;
	
	@ManyToMany(mappedBy="gruposUsuarios",
			targetEntity=Rol.class, 
			cascade={CascadeType.PERSIST, CascadeType.MERGE})
	private List<Rol> roles;
		
	public long getId() 
	{
		return id;
	}

	public void setId(long pId) 
	{
		id = pId;
	}

	public String getGrupo() 
	{
		return grupo;
	}

	public void setGrupo(String pGrupo) 
	{
		grupo = pGrupo;
	}

	public String getDescripcion() 
	{
		return descripcion;
	}

	public void setDescripcion(String pDescripcion) 
	{
		descripcion = pDescripcion;
	}

	
	public List<Usuario> getUsuarios() 
	{
		return usuarios;
	}

	public void setUsuarios(List<Usuario> pUsuarios) 
	{
		usuarios = pUsuarios;
	}
	
	public List<Rol> getRoles()
	{
		return roles;
	}

	public void setRoles(List<Rol> pRoles) 
	{
		roles = pRoles;
	}
	
}
